1. Field of Invention
The present invention relates to computer networks, and in particular to distributed testing on computer networks that is performed by test agents under the control of a test controller.
2. Related Art
In a conventional eventing system model (e.g., publish/subscribe), actions by an entity (e.g., software) are based on the presence of xe2x80x9cevents.xe2x80x9d An event is any occurrence that the entity can sense. For example, an event may be mouse pointer movement into a designated portion of a video display, or may be a failure warning message sent by a hardware component. In some models a particular event has two parts: the event type, defining the category into which the event is placed, and the event data that contains specific information regarding this particular event.
A publisher is an entity that publishes (e.g., generates, transmits) an event to event engine. For example, a hard disk drive may publish a message that it is failing. The event engine is an entity that broadcasts (e.g., transmits using a one-to-many relationship) one or more events to event subscribers. An event subscriber is an entity that has requested (subscribed) notification from the event engine when a particular event occurs. Thus when a particular type of event occurs, the publisher publishes the event to the event engine which, in turn, broadcasts the event to one or more subscribers which then receive the event. See U.S. Pat. Nos. 5,187,789, 5,257,369, and 5,339,392, incorporated herein by reference, for examples of publisher/subscriber methodology.
Event publishing allows information to be distributed without direct addressing. Subscribers wait to receive selected events to which they subscribe, and will take predetermined action upon sensing the subscribed event has occurred. One predetermined event may be to publish a second event upon sensing the first event. In this way, one component may act as both a publisher and a subscriber.
A typical computer network is two or more interconnected computers capable of communicating with each other. Many computer network tests require that testing operations be conducted among two or more computers connected to the network. During some typical network distributed testing operations, one principle entity (e.g., software component stored on one computer) acts as a test controller and one or more other computers act as agents of the test controllers. Thus a test agent is an entity (e.g., software component stored on another computer) that acts at the direction of a test controller. Test agents are typically coded instructions stored in one or more test agent computers for performing the test.
Typical commercial test products are designed so that the coded test agent instructions are shipped to each test agent computer location, and then are installed at each location. The installation and configuration procedures are cumbersome when many test agents are involved in a single test. During testing, the test controller is required to maintain one-to-one (e.g., point-to-point) connection with each agent. Thus test configuration and maintenance is complex when many test agents are involved in a test. The test process is further complicated when the network includes different computers (e.g., routers, switches, end systems) configured to operate in two or more architectures, such as in UNIX(copyright) or WindowsNT(copyright). Furthermore, the test controller must constantly monitor each agent""s capabilities, and for when individual agents are added or deleted from the test. Test agent changes typically require the test be reconfigured.
Along with simplicity, a desirable distributed network test feature is the simultaneous, or near-simultaneous, execution by many test agents of a particular test. Simultaneous and near-simultaneous test execution by many agents allows, for example, testing of a sequencing algorithm at a particular network location when the agents are directed to send data to that one particular location. Such simultaneous or near-simultaneous execution is difficult under existing systems operating using many architectures.
What is required is an efficient and flexible distributed testing system that allows test agents operating in many architectures to simultaneously, or near-simultaneously, execute the desired test.
In accordance with the present invention, a distributed testing environment includes a test controller, an event engine, and one or more test agents interconnected by a computer network. Before a test begins, each test agent is configured with a test script interpreter designed to operate under the software architecture of the test agent""s computer. The interpreters operate in a conventional manner, reading and executing one coded instruction before reading and executing the next coded instruction. In embodiments of the present invention, the interpreters read and execute instructions contained in a test script.
The present invention""s testing environment is event-driven. In accordance with the present invention, the event to which the test agents subscribe is publication of a test script by the test controller. The event type identifies the type of test to be executed and the event data is the actual test script to be run. Thus each test agent initiates test execution upon the receipt of the test script broadcast by the event engine. The test agents use the interpreters to carry out the test script instructions.
During test set-up, test agents negotiate with the test controller and are registered with the event engine. The negotiations allow the test controller to determine the test agent""s configuration and capabilities. Registration informs the event engine that the test agent is available for the test. A test agent may be registered, but may not subscribe to all test scripts.
Once test agents are registered, the test controller receives a test script from a user or other source. The test controller parses the test script, and based on test script contents publishes the script to the event engine which broadcasts the script to the test agents. Test agents subscribing to the particular type of test script receive the broadcast script. The receipt of the test script is the event that triggers the interpreter to execute the instructions in the test script.
After running the test script, each test agent transfers the test results to the test controller. In turn, the test controller transfers all test results to an analysis agent. The analysis agent performs conventional test result analysis and produces a test report that is output to the user.